/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package presenter;

import boundary.ListarContasCorrentesView;
import collection.CollectionContaCorrente;
import entity.ContaCorrente;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author jakson
 */
public class ListarContasCorrentesPresenter {

    private ListarContasCorrentesView view;
    collection.CollectionContaCorrente conta = new CollectionContaCorrente();
    private ArrayList<ContaCorrente> contaCorrente = new ArrayList<ContaCorrente>();
    private int WIDTH;

    public ListarContasCorrentesPresenter() {

        view = new ListarContasCorrentesView(null, true);
        contaCorrente = conta.getContaCorrentes();
        view.getBtnFechar().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                fechar();
            }
        });

        view.getBtnExcluir().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                excluir();
            }
        });

        view.getBtnBloquearConta().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                bloquearConta();
            }
        });





        view.getBtnNova().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                nova();
            }
        });

        carregaTabelaContas(contaCorrente);
        view.setLocationRelativeTo(view);
        view.setVisible(true);


    }

    private void fechar() {
        view.dispose();
        //new GerentePresenter();

    }

    private void excluir() {

        collection.CollectionContaCorrente contaCorrente1 = new CollectionContaCorrente();
        if (view.getTabelaContaCorrente().getSelectedRow() < 0) {
            JOptionPane.showMessageDialog(null, "selecione uma linha para excluir", "ERRO", WIDTH);
        } else {
            if (JOptionPane.showConfirmDialog(null, "Tem certeza que realmente deseja excluir a Agência", "Sistema Bancário", 0, 3) == 0) {
                contaCorrente1.excluirContaCorrente(view.getTabelaContaCorrente().getValueAt(view.getTabelaContaCorrente().getSelectedRow(), 0).toString());
                view.revalidate();

            }
        }

    }

    private void bloquearConta() {
        if (view.getTabelaContaCorrente().getSelectedRow() < 0) {
            JOptionPane.showMessageDialog(null, "selecione uma linha para editar", "ERRo", WIDTH);
        } else {

            conta.editar(view.getTabelaContaCorrente().getValueAt(view.getTabelaContaCorrente().getSelectedRow(), 0).toString());


        }

    }

    private void nova() {
        //view.dispose();
        new ListarClientePresenter("criaConta");
    }

    private void carregaTabelaContas(ArrayList conta) {

        DefaultTableModel tm = new DefaultTableModel(
                new Object[][]{},
                new String[]{"Nº Conta", "Status", "limite", "Nome", "Agencia"}) {

            @Override
            public boolean isCellEditable(int row, int col) {
                return false;
            }
        };

        tm.setNumRows(0);
        for (int i = 0; i < conta.size(); i++) {
            String linha = (contaCorrente.get(i).getnConta() + "," + contaCorrente.get(i).getStatus()
                    + "," + contaCorrente.get(i).getLimiteCliente() + "," + contaCorrente.get(i).getNome() + "," + contaCorrente.get(i).getAgencia());
            String valores[] = linha.split(",");
            tm.addRow(valores);
        }

        view.getTabelaContaCorrente().setModel(tm);

    }
}
